import { get, post } from '@/service/request'
import { MenuData } from '@/api/system/menu'
import type { RoleData } from '@/api/system/role'

// 获取用户信息、菜单、权限
export function getUserBaseData() {
  return get<UserInfo>('/upms/user/getLoginInfo')
}

// 获取用户列表
export function getUserPage(data: any) {
  return get<UserPageResult>('/upms/user/page', data)
}

// 新增用户
export function addUser(data: UserForm) {
  return post('/upms/user/save', data)
}

// 编辑用户
export function editUser(data: UserForm) {
  return post('/upms/user/update', data)
}

// 删除用户
export function deleteUser(id: string) {
  return post('/upms/user/removeById', { id: id })
}

// 查询工业互联网用户
export function queryIDaasUser(username: string) {
  return post('/upms/user/queryIDaasUserInfo', { username })
}

/**
 * 获取用户数据权限
 * @param id 用户ID
 * @param type 搅拌站业务类型 固定 3
 */
export function getUserDataAuth(userId: string) {
  return get<MixingStationPerm[]>('/upms/user/dataAuth/getByUserId', { userId, type: 3 })
}

// 编辑用户权限
export function editUserDataAuth(data: any) {
  return post('/upms/user/dataAuth/grantToMixingStation.html', data)
}

export interface UserInfo {
  /** 菜单 */
  menuList: MenuData[]
  /** 角色 */
  roleList: { roleId: string; roleName: string }[]
  /** 页面权限 */
  pagePermissions: string[]
  /** 按钮权限 */
  btnPermissions: string[]
  /** 用户信息 */
  sysUser: {
    userId: string
    username: string
    phone: string
    email: string
    avatar?: string
    lockFlag: '0' | '1'
    delFlag: '0' | '1'
  }
}

export interface UserPageQuery extends PageQuery {
  username?: string // 账号
  name?: string // 姓名
  type?: 1 | 2 // 1 内部账号 2、外部账号
  roleIds?: string // 角色id
}

interface UserPageResult {
  size: number
  total: number
  records: UserPageData[]
}

/** 用户列表对象 */
export interface UserPageData {
  /** 创建时间 */
  createTime?: Date
  /** 修改时间 */
  updateTime?: Date
  /** 用户邮箱 */
  email?: string
  /** 用户ID */
  userId?: string
  /** 手机号 */
  phone?: string
  /** 真实姓名 */
  name?: string
  /** 角色名称，多个使用英文逗号(,)分割 */
  roleNames?: string
  /** 角色ID集合 */
  roleIdArray?: string[]
  /* 角色列表 */
  roleList?: RoleData[]
  /** 账号类型(1 内部账号 2、外部账号) */
  type?: 1 | 2
  /** 用户状态('0':启用;'9':禁用) */
  lockFlag?: '0' | '9'
  /** 用户名 */
  username?: string
}

export interface UserForm {
  /** 用户邮箱 */
  email?: string
  /** 用户ID */
  userId?: string
  /** 手机号 */
  phone?: string
  /** 真实姓名 */
  name?: string
  /** 角色ID集合 */
  roleIdArray?: string[]
  /** 角色ID, 多个使用英文逗号(,)分割 */
  roleIds?: string
  /** 账号类型(1 内部账号 2、外部账号) */
  type?: 1 | 2
  /** 用户状态('0':启用;'9':禁用) */
  lockFlag?: '0' | '9'
  /** 用户名 */
  username?: string
}

export interface MixingStationPerm {
  /** 搅拌站编号 */
  mixingStationCodes: string
  /** 启用状态 (1:启用; 0:禁用) */
  status: 0 | 1
  /** 权限 id */
  id: string
  /** 权限类型 目前只有搅拌站 3 */
  type: number
}
